


# IO编程
# IO在计算机中指的是Input/Output,也就是输入输出
# 在IO编程中，stream是一种重要的概念，分为输入流和输出流
# 只能单向流动，数据传输过程中需要架设两个数据管道，这样读写可以实现同步

# 文件读写
# open函数用来打开文件：
# open(name[.mode[.buffering]])
# open函数使用一个文件名作为唯一的强制参数，然后返回一个文件对象
# 模式和缓冲区参数都是可选的，默认模式是读模式，默认缓冲区是无
# 
# open函数的mode参数.png
# 
# 一般处理文本文件时，不需要'b'参数，但处理一些如mp3或图像时，应该在
# 模式参数中增加'b'
# 
# 缓冲区buffering控制着文件的缓冲
# 0：无缓冲，直接写到硬盘上
# 1：有缓冲，先写到内存中，只有flush函数或close函数才会将数据更新到硬盘
# 大于1：代表缓冲区的大小(字节)
# -1(或负数)：使用默认缓冲区的大小
# 
# 文件读取主要分为按字节读取和按行读取，经常用到的方法有read()、readlines()
# close()
# 
# 由于文件操作会出现IO异常，所以使用try...finally来保证最后执行close函数
# 使用with语句代替try...finally代码块和close方法
with open(r'filepath', 'r') as fileReader:
	print(fileReader.read())
# 对于大文件，可以反复调用read(size)方法，一次最多读取size个字节
# 如果是文本文件，调用readline()方法每次读取一行，调用readlines()一次读取
# 所有内容并按行返回列表
# 文件写入在调用open方法时，传入标识符'w'或'wb'表示写入文本文件或写入二进制文件
# 可以反复调用write()方法写入文件，最后必须使用close关闭文件
# 使用write()方法时，并不是立即将数据写入文件中，而是先写入内存中缓存起来，
# 等到空闲时候再写入文件，最后使用close。也可以使用flush()方法


# 操作文件和目录
# 在Python中对文件和目录的操作经常用到os模块和shutil模块
# 操作文件和目录的常用方法：
# 文件和目录操作的方法_1.png
# 文件和目录操作的方法_2.png
# 文件和目录操作的方法_3.png


# 序列化操作
# 把内存中的变量编程可存储或可传输的过程，就是序列化
# 
# 将内存中的变量序列化之后，额可以将序列化后的内容写入磁盘，或者通过网络传输到别的机器上，
# 实现程序状态的保存和共享。反过来，把变量内容从序列化的对象重新读取到内存，称为反序列化
# 
# Python中提供了两个模块：cPickle和pickle来实现序列化，前者是C语言编写
# 一般采取是cPickle模块，否则再导入pickle模块
# 
# pickle实现序列化主要使用的是dumps方法或dump方法
# dumps方法可以将任意对象序列化成一个str，然后可以将这个str写入文件进行保存
# 如果使用dump方法，可以将序列化后的对象直接写入文件中
# pickle实现反序列化使用的是loads方法或load方法。与dumps和dump对应
# 
# 假设我们想在不同的编程语言之间传递对象，把对象序列化为标准格式是关键，例如XML，
# 现在更流行的是序列化为JSON格式
# 
